DefinitionBlock ("DSDT.aml", "DSDT", 2, "INTEL ", "KBIBX10J", 0x00000007)
{
    Scope (_PR)
    {
        Processor (CPU0, 0x00, 0x00000410, 0x06) {}
        Processor (CPU1, 0x01, 0x00000410, 0x06) {}
        Processor (CPU2, 0x02, 0x00000410, 0x06) {}
        Processor (CPU3, 0x03, 0x00000410, 0x06) {}
        Processor (CPU4, 0x04, 0x00000410, 0x06) {}
        Processor (CPU5, 0x05, 0x00000410, 0x06) {}
        Processor (CPU6, 0x06, 0x00000410, 0x06) {}
        Processor (CPU7, 0x07, 0x00000410, 0x06) {}
    }

    Name (_S0, Package (0x04)
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S1, Package (0x04)
    {
        One, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S3, Package (0x04)
    {
        0x05, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S4, Package (0x04)
    {
        0x06, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S5, Package (0x04)
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Scope (_GPE)
    {
        Method (_L09, 0, NotSerialized)
        {
            If (\_SB.PCI0.RP01.XPM1 (Zero))
            {
                Notify (\_SB.PCI0.RP01, 0x02)
            }

            If (\_SB.PCI0.RP02.XPM1 (One))
            {
                Notify (\_SB.PCI0.RP02, 0x02)
            }

            If (\_SB.PCI0.RP03.XPM1 (0x02))
            {
                Notify (\_SB.PCI0.RP03, 0x02)
            }

            If (\_SB.PCI0.RP04.XPM1 (0x03))
            {
                Notify (\_SB.PCI0.RP04, 0x02)
            }

            If (\_SB.PCI0.RP05.XPM1 (0x04))
            {
                Notify (\_SB.PCI0.RP05, 0x02)
            }

            If (\_SB.PCI0.RP06.XPM1 (0x05))
            {
                Notify (\_SB.PCI0.RP06, 0x02)
            }

            If (\_SB.PCI0.RP07.XPM1 (0x06))
            {
                Notify (\_SB.PCI0.RP07, 0x02)
            }

            If (\_SB.PCI0.RP08.XPM1 (0x07))
            {
                Notify (\_SB.PCI0.RP08, 0x02)
            }

            Notify (\_SB.SLPB, 0x02)
        }

        Method (_L0B, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.PCIB, 0x02)
            Notify (\_SB.SLPB, 0x02)
        }

        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.EHC1, 0x02)
            Notify (\_SB.PCI0.EHC2, 0x02)
            Notify (\_SB.PCI0.HDEF, 0x02)
            Notify (\_SB.PCI0.GLAN, 0x02)
        }

        Method (_L1D, 0, NotSerialized)
        {
            Store (0x02, ILED)
            \_SB.PCI0.LPCB.WAKE ()
            Notify (\_SB.SLPB, 0x02)
        }
    }

    Name (PSTE, Zero)
    Name (TSTE, Zero)
    Name (SUPP, Zero)
    Name (CTRL, Zero)
    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, Buffer (0x10)
                {
                    /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                    /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }

    Method (_WAK, 1, Serialized)
    {
        And (\_SB.PCI0.EHC1.OOWS, 0xFFFEFFFF, \_SB.PCI0.EHC1.OOWS)
        And (\_SB.PCI0.EHC2.OOWS, 0xFFFEFFFF, \_SB.PCI0.EHC2.OOWS)
        ShiftLeft (Arg0, 0x04, IO80)
        \_SB.PCI0.LPCB.WAK (Arg0)
        If (CondRefOf (_OSI, Local0))
        {
            Store (0x21, OSTY)
        }

        Notify (\_SB.PCI0.EHC1, Zero)
        Notify (\_SB.PCI0.EHC2, Zero)
        If (LEqual (Arg0, 0x04))
        {
            If (LEqual (WAS4, One))
            {
                Notify (\_SB.SLPB, 0x02)
            }
        }

        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
    }

    Method (_PTS, 1, NotSerialized)
    {
        Store (Arg0, IO80)
        \_SB.PCI0.RP01.XPM1 (Zero)
        \_SB.PCI0.RP02.XPM1 (Zero)
        \_SB.PCI0.RP03.XPM1 (Zero)
        \_SB.PCI0.RP04.XPM1 (Zero)
        \_SB.PCI0.RP05.XPM1 (Zero)
        \_SB.PCI0.RP06.XPM1 (Zero)
        \_SB.PCI0.RP07.XPM1 (Zero)
        \_SB.PCI0.RP08.XPM1 (Zero)
        While (PXGS)
        {
            Store (One, PXGS)
        }

        Store (One, ILED)
        \_SB.PCI0.LPCB.PTS (Arg0)
    }

    OperationRegion (SMC1, SystemIO, 0x2E, 0x02)
    Field (SMC1, ByteAcc, NoLock, Preserve)
    {
        INDX,   8, 
        DATA,   8
    }

    IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
    {
                Offset (0x07), 
        LDN,    8, 
                Offset (0x20), 
        DIDR,   8, 
                Offset (0x27), 
        GLO1,   8, 
                Offset (0x2A), 
        MFP1,   8, 
                Offset (0x2C), 
        MFP2,   8, 
                Offset (0x2F), 
        SFR1,   8, 
        ACTR,   8, 
                Offset (0x60), 
        IOAH,   8, 
        IOAL,   8, 
                Offset (0x70), 
        INTR,   8, 
                Offset (0x72), 
        INT1,   8, 
                Offset (0x74), 
        DMCH,   8, 
                Offset (0xE0), 
        VBAT,   8, 
                Offset (0xE3), 
        ESTS,   8, 
        PPO5,   8, 
                Offset (0xE8), 
        CRE8,   8, 
                Offset (0xEB), 
        MSL5,   8, 
                Offset (0xF4), 
        IOR5,   8, 
        DAR5,   8, 
                Offset (0xF7), 
        CRF7,   8, 
        FPYL,   8
    }

    OperationRegion (ACMS, SystemIO, 0x72, 0x02)
    Field (ACMS, ByteAcc, NoLock, Preserve)
    {
        CMSI,   8, 
        CMSD,   8
    }

    IndexField (CMSI, CMSD, ByteAcc, NoLock, Preserve)
    {
                Offset (0x6E), 
        WAS4,   8, 
        OSTY,   8, 
                Offset (0x7D), 
        HPEE,   1
    }

    OperationRegion (DBG0, SystemIO, 0x80, One)
    Field (DBG0, ByteAcc, NoLock, Preserve)
    {
        IO80,   8
    }

    OperationRegion (CONS, SystemIO, 0x0401, 0x0110)
    Field (CONS, ByteAcc, NoLock, Preserve)
    {
            ,   6, 
        PCWS,   1, 
                Offset (0x1F), 
            ,   9, 
        PXGS,   1, 
                Offset (0x10E), 
            ,   3, 
        ILED,   2
    }

    OperationRegion (PSYS, SystemMemory, 0xCF7BEE18, 0x0100)
    Field (PSYS, ByteAcc, NoLock, Preserve)
    {
        PLAT,   32, 
        APC0,   1, 
        APC1,   1, 
        APC2,   1, 
        APC3,   1, 
        APCA,   1, 
                Offset (0x05), 
        NMEN,   8, 
        TPME,   1, 
        CSEN,   1, 
        C2OS,   1, 
        C6EN,   1, 
        C7EN,   1, 
        MWOS,   1, 
        PSEN,   1, 
                Offset (0x07), 
        PSDT,   2, 
        SBS1,   1, 
        KBEP,   1, 
        MSEP,   1, 
        DIOH,   1, 
        LED3,   2, 
        CPID,   32, 
        TOLM,   32, 
        BRDS,   4, 
        LED1,   2
    }

    OperationRegion (SRCR, SystemMemory, 0xFED1C000, 0x4000)
    Field (SRCR, AnyAcc, NoLock, Preserve)
    {
                Offset (0x3404), 
        HPAS,   2, 
            ,   5, 
        HPAE,   1, 
                Offset (0x3418), 
        CHPD,   1, 
            ,   1, 
        SATD,   1, 
        SMBD,   1, 
        AZLD,   1, 
        UH7D,   1, 
        UH8D,   1, 
        UH5D,   1, 
        UH0D,   1, 
        UH1D,   1, 
        UH2D,   1, 
        UH3D,   1, 
        UH4D,   1, 
            ,   1, 
        LPCD,   1, 
        EHCD,   1, 
        RP1D,   1, 
        RP2D,   1, 
        RP3D,   1, 
        RP4D,   1, 
        RP5D,   1, 
        RP6D,   1, 
        RP7D,   1, 
        RP8D,   1, 
            ,   1, 
        SAD2,   1, 
            ,   1, 
            ,   1, 
        UH9D,   1, 
                Offset (0x341C), 
                Offset (0x3428), 
        DISP,   1, 
        HC_0,   1, 
        HC_1,   1, 
        HC_2,   1, 
        HC_3,   1
    }

    OperationRegion (TPMM, SystemMemory, 0xFED40000, One)
    Field (TPMM, AnyAcc, NoLock, Preserve)
    {
        TPMA,   8
    }

    Scope (_SB)
    {
        Device (SLPB)
        {
            Name (_HID, EisaId ("PNP0C0E"))
            Name (_PRW, Package (0x02)
            {
                0x1D, 
                0x04
            })
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08"))
            Name (_CID, EisaId ("PNP0A03"))
            Name (_ADR, Zero)
            Name (PBRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x0000,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0000,             // Length
                    ,, _Y00)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x0CF7,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0CF8,             // Length
                    ,, , TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0D00,             // Range Minimum
                    0xFFFF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0xF300,             // Length
                    ,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y01, AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, NotSerialized)
            {
                CreateWordField (PBRS, \_SB.PCI0._Y00._MIN, MMIN)
                CreateWordField (PBRS, \_SB.PCI0._Y00._MAX, MMAX)
                CreateWordField (PBRS, \_SB.PCI0._Y00._LEN, MLEN)
                Store (Zero, MMIN)
                Store (0x3F, MMAX)
                Decrement (MMAX)
                Subtract (MMAX, MMIN, MLEN)
                Increment (MLEN)
                CreateDWordField (PBRS, \_SB.PCI0._Y01._MIN, TMIN)
                CreateDWordField (PBRS, \_SB.PCI0._Y01._MAX, TMAX)
                CreateDWordField (PBRS, \_SB.PCI0._Y01._LEN, TLEN)
                If (LNotEqual (MDET (), 0xF8000000))
                {
                    Store (MDET (), TMIN)
                    Store (0xF8000000, TMAX)
                    Decrement (TMAX)
                    Subtract (TMAX, TMIN, TLEN)
                    Increment (TLEN)
                }

                Return (PBRS)
            }

            Method (_PRT, 0, NotSerialized)
            {
                Return (Package (0x33)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0006FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0006FFFF, 
                        One, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0006FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0006FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0016FFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0016FFFF, 
                        One, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0016FFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0016FFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0018FFFF, 
                        Zero, 
                        Zero, 
                        0x16
                    }, 

                    Package (0x04)
                    {
                        0x0019FFFF, 
                        Zero, 
                        Zero, 
                        0x14
                    }, 

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        Zero, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        One, 
                        Zero, 
                        0x15
                    }, 

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x001BFFFF, 
                        Zero, 
                        Zero, 
                        0x16
                    }, 

                    Package (0x04)
                    {
                        0x001CFFFF, 
                        Zero, 
                        Zero, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x001CFFFF, 
                        One, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x001CFFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x001CFFFF, 
                        0x03, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        Zero, 
                        Zero, 
                        0x17
                    }, 

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        One, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        0x02, 
                        Zero, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        0x03, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        Zero, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        One, 
                        Zero, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        0x02, 
                        Zero, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        0x03, 
                        Zero, 
                        0x10
                    }
                })
            }

            Method (_INI, 0, NotSerialized)
            {
                If (CondRefOf (_OSI, Local0))
                {
                    Store (0x21, OSTY)
                }

                And (^EHC1.OOWS, 0xFFFEFFFF, ^EHC1.OOWS)
                And (^EHC2.OOWS, 0xFFFEFFFF, ^EHC2.OOWS)
            }

            Method (_OSC, 4, NotSerialized)
            {
                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40, 
                            /* 0008 */    0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
                        }))
                {
                    CreateDWordField (Arg3, Zero, CDW1)
                    CreateDWordField (Arg3, 0x04, CDW2)
                    CreateDWordField (Arg3, 0x08, CDW3)
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    If (LNotEqual (And (SUPP, 0x16), 0x16))
                    {
                        And (CTRL, 0x1E, CTRL)
                    }

                    And (CTRL, 0x1B, CTRL)
                    And (CTRL, 0x1D, CTRL)
                    If (Not (And (CDW1, One)))
                    {
                        If (And (CTRL, One)) {}
                        If (And (CTRL, 0x04)) {}
                        If (And (CTRL, 0x10)) {}
                    }

                    If (LNotEqual (Arg1, One))
                    {
                        Or (CDW1, 0x08, CDW1)
                    }

                    If (LNotEqual (CDW3, CTRL))
                    {
                        Or (CDW1, 0x10, CDW1)
                    }

                    Store (CTRL, CDW3)
                    Return (Arg3)
                }
                Else
                {
                    Or (CDW1, 0x04, CDW1)
                    Return (Arg3)
                }
            }

            Method (_BBN, 0, NotSerialized)
            {
                Return (Zero)
            }

            Method (MDET, 0, NotSerialized)
            {
                Store (TOLM, Local0)
                And (Local0, 0x0FFFFFFF, Local1)
                If (Local1)
                {
                    And (Local0, 0xF0000000, Local0)
                    Add (Local0, 0x10000000, Local0)
                }

                Return (Local0)
            }

            Device (EHC1)
            {
                Name (_ADR, 0x001D0000)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x03
                })
                OperationRegion (USR2, PCI_Config, 0x62, 0x0A)
                Field (USR2, AnyAcc, NoLock, Preserve)
                {
                    URE2,   9, 
                            Offset (0x06), 
                    OOWS,   32
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Store (Zero, URE2)
                    }

                    If (LEqual (Arg0, One))
                    {
                        Store (0x01FF, URE2)
                    }
                }

                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x0A)
                        {
                            "AAPL,current-available", 
                            0x05DC, 
                            "AAPL,current-extra", 
                            0x044C, 
                            "AAPL,current-in-sleep", 
                            0x09C4, 
                            "locationID", 
                            0xFD000000, 
                            "USBBusNumber", 
                            0xFD
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (EHC2)
            {
                Name (_ADR, 0x001A0000)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x03
                })
                OperationRegion (USR2, PCI_Config, 0x62, 0x0A)
                Field (USR2, AnyAcc, NoLock, Preserve)
                {
                    URE2,   9, 
                            Offset (0x06), 
                    OOWS,   32
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Store (Zero, URE2)
                    }

                    If (LEqual (Arg0, One))
                    {
                        Store (0x01FF, URE2)
                    }
                }

                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x0A)
                        {
                            "AAPL,current-available", 
                            0x05DC, 
                            "AAPL,current-extra", 
                            0x044C, 
                            "AAPL,current-in-sleep", 
                            0x09C4, 
                            "locationID", 
                            0xFA000000, 
                            "USBBusNumber", 
                            0xFA
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (HDEF)
            {
                Name (_ADR, 0x001B0000)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x03
                })
                OperationRegion (AZPM, PCI_Config, 0x55, One)
                Field (AZPM, ByteAcc, NoLock, Preserve)
                {
                    AZWE,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Store (Zero, AZWE)
                    }

                    If (LEqual (Arg0, One))
                    {
                        Store (One, AZWE)
                    }
                }

                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x0A)
                        {
                            "model", 
                            Buffer (0x10)
                            {
                                "Realtek ALC889a"
                            }, 

                            "MaximumBootBeepVolume", 
                            0x40, 
                            "platformFamily", 
                            Zero, 
                            "layout-id", 
                            /**** Is ResourceTemplate, but EndTag not at buffer end ****/ Buffer (0x04)
                            {
                                0x79, 0x03, 0x00, 0x00
                            }, 

                            "PinConfigurations", 
                            Buffer (0x38)
                            {
                                /* 0000 */    0x00, 0x20, 0x44, 0x29, 0xF0, 0x11, 0x11, 0x41, 
                                /* 0008 */    0x10, 0x40, 0x01, 0x01, 0x20, 0x40, 0x21, 0x02, 
                                /* 0010 */    0x30, 0x60, 0x01, 0x01, 0x40, 0x20, 0x01, 0x01, 
                                /* 0018 */    0x50, 0x90, 0xA1, 0x02, 0x60, 0x10, 0x01, 0x01, 
                                /* 0020 */    0x70, 0x30, 0x81, 0x01, 0x80, 0x90, 0xA1, 0x01, 
                                /* 0028 */    0xF0, 0x11, 0x11, 0x41, 0xF0, 0x11, 0x11, 0x41, 
                                /* 0030 */    0x90, 0x11, 0x45, 0x01, 0xA0, 0x11, 0xC5, 0x01
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (GLAN)
            {
                Name (_ADR, 0x00190000)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x04
                })
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x02)
                        {
                            "model", 
                            Buffer (0x0E)
                            {
                                "Intel 82578DC"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (IO10)
            {
                Name (_ADR, 0x00080000)
                OperationRegion (IBUS, PCI_Config, 0xD0, 0xC0)
                Field (IBUS, DWordAcc, NoLock, Preserve)
                {
                        ,   26, 
                    TOLM,   6, 
                        ,   26, 
                    TOHM,   38
                }
            }

            Device (IO1X)
            {
                Name (_ADR, 0x00080001)
                OperationRegion (PBIC, PCI_Config, Zero, 0xF0)
                Field (PBIC, DWordAcc, NoLock, Preserve)
                {
                            Offset (0x7C), 
                    SR0,    32, 
                    SR1,    32, 
                    SR2,    32, 
                    SR3,    32, 
                    SR4,    32, 
                    SR5,    32, 
                    SR6,    32, 
                    SR7,    32, 
                    SR8,    32, 
                    SR9,    32
                }
            }

            Device (LPCB)
            {
                Name (_ADR, 0x001F0000)
                Mutex (MUT0, 0x00)
                Method (ENFG, 0, NotSerialized)
                {
                    Acquire (MUT0, 0x0FFF)
                    Store (0x87, INDX)
                    Store (0x87, INDX)
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0xAA, INDX)
                    Release (MUT0)
                }

                Method (WAK, 1, Serialized)
                {
                    ENFG ()
                    If (LOr (LEqual (DIDR, 0xB4), LEqual (DIDR, 0xA5)))
                    {
                        If (LOr (LEqual (Arg0, One), LEqual (Arg0, 0x03)))
                        {
                            Store (0x0A, LDN)
                            Store (ESTS, ESTS)
                            Store (CRE8, Local0)
                            And (Local0, 0x3F, Local0)
                            Store (Local0, CRE8)
                        }

                        Store (0x0B, LDN)
                        Store (0x47, CRF7)
                        Store (0x40, FPYL)
                    }

                    EXFG ()
                }

                Method (PTS, 1, NotSerialized)
                {
                    ENFG ()
                    If (LOr (LEqual (DIDR, 0xB4), LEqual (DIDR, 0xA5)))
                    {
                        If (LOr (LEqual (Arg0, One), LEqual (Arg0, 0x03)))
                        {
                            Store (0x0A, LDN)
                            Store (ESTS, ESTS)
                            If (LEqual (Arg0, One))
                            {
                                Store (CRF7, Local0)
                                And (Local0, 0x10, Local0)
                                If (Local0)
                                {
                                    Store (CRE8, Local0)
                                    And (Local0, 0x3F, Local0)
                                    Store (Local0, CRE8)
                                    Store (CRE8, Local0)
                                    Or (Local0, 0xC0, Local0)
                                    Store (Local0, CRE8)
                                }
                            }

                            If (LEqual (Arg0, One))
                            {
                                Store (0x0B, LDN)
                                Store (0x40, FPYL)
                                If (LEqual (LED1, Zero))
                                {
                                    Store (0x40, CRF7)
                                }
                                Else
                                {
                                    If (LEqual (LED1, One))
                                    {
                                        Store (0x46, CRF7)
                                    }
                                    Else
                                    {
                                        Store (0x47, CRF7)
                                    }
                                }
                            }

                            If (LEqual (Arg0, 0x03))
                            {
                                Store (0x0B, LDN)
                                Store (0x40, FPYL)
                                If (LEqual (LED3, Zero))
                                {
                                    Store (0x40, CRF7)
                                }
                                Else
                                {
                                    If (LEqual (LED3, One))
                                    {
                                        Store (0x46, CRF7)
                                    }
                                    Else
                                    {
                                        If (LEqual (LED3, 0x02))
                                        {
                                            Store (0x47, CRF7)
                                        }
                                        Else
                                        {
                                            Store (0x40, CRF7)
                                            Store (0x47, FPYL)
                                        }
                                    }
                                }
                            }
                        }
                    }

                    EXFG ()
                }

                Method (WAKE, 0, NotSerialized)
                {
                    ENFG ()
                    If (LOr (LEqual (DIDR, 0xB4), LEqual (DIDR, 0xA5)))
                    {
                        Store (0x0A, LDN)
                        Store (ESTS, ESTS)
                        Store (CRE8, Local0)
                        And (Local0, 0x3F, Local0)
                        Store (Local0, CRE8)
                        Store (0x0B, LDN)
                        Store (0x47, CRF7)
                        Store (0x40, FPYL)
                    }

                    EXFG ()
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0087,             // Range Minimum
                            0x0087,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0089,             // Range Minimum
                            0x0089,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x008F,             // Range Minimum
                            0x008F,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x00,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {4}
                    })
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        IRQNoFlags ()
                            {0,8,11,12}
                    })
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (0x0F)
                    }
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                }

                Device (IPIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x01,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x01,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                }

                Device (MATH)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Range Minimum
                            0x00F0,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (TIMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                    })
                }

                Device (LDRC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, Zero)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0400,             // Range Minimum
                            0x0400,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0062,             // Range Minimum
                            0x0062,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0066,             // Range Minimum
                            0x0066,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0680,             // Range Minimum
                            0x0680,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0010,             // Range Minimum
                            0x0010,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0072,             // Range Minimum
                            0x0072,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0084,             // Range Minimum
                            0x0084,             // Range Maximum
                            0x01,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0088,             // Range Minimum
                            0x0088,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x008C,             // Range Minimum
                            0x008C,             // Range Maximum
                            0x01,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0090,             // Range Minimum
                            0x0090,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                    })
                }

                Device (PDRC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, One)
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xF8000000,         // Address Base
                            0x04000000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFEB00000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED10000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED14000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED1B000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED19000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED1A000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED20000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFED45000,         // Address Base
                            0x00055000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000C0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000E0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFF000000,         // Address Base
                            0x01000000,         // Address Length
                            )
                    })
                }
            }

            Device (PCIB)
            {
                Name (_ADR, 0x001E0000)
                Name (_PRW, Package (0x02)
                {
                    0x0B, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x10)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x15
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x16
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x17
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x14
                        }, 

                        Package (0x04)
                        {
                            0x0001FFFF, 
                            Zero, 
                            Zero, 
                            0x16
                        }, 

                        Package (0x04)
                        {
                            0x0001FFFF, 
                            One, 
                            Zero, 
                            0x15
                        }, 

                        Package (0x04)
                        {
                            0x0001FFFF, 
                            0x02, 
                            Zero, 
                            0x14
                        }, 

                        Package (0x04)
                        {
                            0x0001FFFF, 
                            0x03, 
                            Zero, 
                            0x17
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            Zero, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            One, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            0x02, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            0x03, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            Zero, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            One, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x02, 
                            Zero, 
                            0x15
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x03, 
                            Zero, 
                            0x16
                        }
                    })
                }

                Device (CRD1)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (CRD2)
                {
                    Name (_ADR, 0x00010000)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 3"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (FRWR)
                {
                    Name (_ADR, 0x00030000)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x04)
                            {
                                "fwports", 
                                Buffer (0x04)
                                {
                                    0x02, 0x00, 0x00, 0x00
                                }, 

                                "fwswappedbib", 
                                Buffer (0x04)
                                {
                                    0x01, 0x00, 0x00, 0x00
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }

            Device (P0P1)
            {
                Name (_ADR, 0x00010000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }
            }

            Device (P0P2)
            {
                Name (_ADR, 0x00030000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }

                Device (PSX1)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 7"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)
                }
            }

            Device (P0P3)
            {
                Name (_ADR, 0x00050000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }

                Device (PSX2)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 4"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)
                }
            }

            Device (P0P4)
            {
                Name (_ADR, 0x00060000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }

                Device (PSX3)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x0E)
                                {
                                    "Slot 2"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (HDAU)
                {
                    Name (_ADR, One)
                }
            }

            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }
            }

            Device (RP02)
            {
                Name (_ADR, 0x001C0001)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x10
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }
            }

            Device (RP03)
            {
                Name (_ADR, 0x001C0002)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x11
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }
            }

            Device (RP04)
            {
                Name (_ADR, 0x001C0003)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x12
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }
            }

            Device (RP05)
            {
                Name (_ADR, 0x001C0004)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Device (CARD)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 5"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }

            Device (RP06)
            {
                Name (_ADR, 0x001C0005)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x10
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }
            }

            Device (RP07)
            {
                Name (_ADR, 0x001C0006)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x11
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Device (CARD)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot 6"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }

            Device (RP08)
            {
                Name (_ADR, 0x001C0007)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (OPEX, PCI_Config, Zero, 0xFF)
                Field (OPEX, AnyAcc, NoLock, Preserve)
                {
                    RPID,   32, 
                            Offset (0x19), 
                    SECB,   8, 
                            Offset (0x34), 
                    CPLT,   8, 
                            Offset (0x58), 
                    SSLC,   10, 
                            Offset (0x5A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x5B), 
                    LSCX,   1, 
                            Offset (0x60), 
                    SQID,   16, 
                    SPME,   1, 
                    SPMP,   1, 
                            Offset (0x64), 
                            Offset (0xB8), 
                    NSLC,   10, 
                            Offset (0xBA), 
                    NSLS,   7, 
                            Offset (0xBC), 
                            Offset (0xDC), 
                        ,   30, 
                    HPSX,   1, 
                    RPSC,   1
                }

                Method (XPM1, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    While (SPME)
                    {
                        Store (One, SPME)
                    }

                    While (RPSC)
                    {
                        Store (One, RPSC)
                    }

                    Store (One, PCWS)
                    Return (Local0)
                }

                Method (XRPW, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (RPID, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }

                    Store (SPME, Local0)
                    Return (Local0)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    Return (Package (0x04)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            Zero, 
                            Zero, 
                            0x15
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            One, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x02, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0xFFFF, 
                            0x03, 
                            Zero, 
                            0x12
                        }
                    })
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Device (MRVL)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "model", 
                                Buffer (0x25)
                                {
                                    "Marvell 88SE6121/45 ESATA Controller"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Device (PRT0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB0, Buffer (0x07)
                            {
                                0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
                            })
                            Return (PIB0)
                        }

                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x02)
                                {
                                    "io-device-location", 
                                    Buffer (0x0D)
                                    {
                                        "ESATA Port 1"
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (PRT1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB1, Buffer (0x07)
                            {
                                0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
                            })
                            Return (PIB1)
                        }

                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x02)
                                {
                                    "io-device-location", 
                                    Buffer (0x0D)
                                    {
                                        "ESATA Port 2"
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (PRT2)
                    {
                        Name (_ADR, 0x02)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB0, Buffer (0x07)
                            {
                                0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
                            })
                            Return (PIB0)
                        }

                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x02)
                                {
                                    "io-device-location", 
                                    Buffer (0x06)
                                    {
                                        "Bay 7"
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB1, Buffer (0x07)
                            {
                                0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
                            })
                            Return (PIB1)
                        }

                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x02)
                                {
                                    "io-device-location", 
                                    Buffer (0x06)
                                    {
                                        "Bay 8"
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)
                Device (PRT0)
                {
                    Name (_ADR, Zero)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB0, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
                        })
                        Return (PIB0)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (PRT1)
                {
                    Name (_ADR, One)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB1, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
                        })
                        Return (PIB1)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 2"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (PRT2)
                {
                    Name (_ADR, 0x02)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB0, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
                        })
                        Return (PIB0)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 3"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (PRT3)
                {
                    Name (_ADR, 0x03)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB1, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
                        })
                        Return (PIB1)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 4"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (PRT4)
                {
                    Name (_ADR, 0x04)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB0, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
                        })
                        Return (PIB0)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 5"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (PRT5)
                {
                    Name (_ADR, 0x05)
                    Method (_GTF, 0, NotSerialized)
                    {
                        Name (PIB1, Buffer (0x07)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
                        })
                        Return (PIB1)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "io-device-location", 
                                Buffer (0x06)
                                {
                                    "Bay 6"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }

            Device (SBUS)
            {
                Name (_ADR, 0x001F0003)
                OperationRegion (SMBE, PCI_Config, 0x04, 0x02)
                Field (SMBE, AnyAcc, NoLock, Preserve)
                {
                    IOSE,   1
                }

                OperationRegion (SMBP, PCI_Config, 0x40, 0xC0)
                Field (SMBP, DWordAcc, NoLock, Preserve)
                {
                        ,   2, 
                    I2CE,   1
                }

                OperationRegion (SMPB, PCI_Config, 0x20, 0x04)
                Field (SMPB, DWordAcc, NoLock, Preserve)
                {
                        ,   5, 
                    SBAR,   11
                }

                OperationRegion (SMBI, SystemIO, ShiftLeft (SBAR, 0x05), 0x10)
                Field (SMBI, ByteAcc, NoLock, Preserve)
                {
                    HSTS,   8, 
                            Offset (0x02), 
                    HCON,   8, 
                    HCOM,   8, 
                    TXSA,   8, 
                    DAT0,   8, 
                    DAT1,   8, 
                    HBDR,   8, 
                    PECR,   8, 
                    RXSA,   8, 
                    SDAT,   16
                }

                Name (SBOK, Zero)
                Method (ENAB, 0, NotSerialized)
                {
                    Store (One, IOSE)
                    Store (One, SBOK)
                }

                Method (DISB, 0, NotSerialized)
                {
                    Store (Zero, SBOK)
                }

                Method (SSXB, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRXB, 1, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (0x44, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SWRB, 3, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (Arg2, DAT0)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRDB, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SWRW, 3, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    And (Arg2, 0xFF, DAT1)
                    And (ShiftRight (Arg2, 0x08), 0xFF, DAT0)
                    Store (0x4C, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRDW, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x4C, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (Or (ShiftLeft (DAT0, 0x08), DAT1))
                    }

                    Return (0xFFFFFFFF)
                }

                Method (SBLW, 4, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Arg3, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (SizeOf (Arg2), DAT0)
                    Store (Zero, Local1)
                    Store (DerefOf (Index (Arg2, Zero)), HBDR)
                    Store (0x54, HCON)
                    While (LGreater (SizeOf (Arg2), Local1))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (Zero)
                        }

                        Store (0x80, HSTS)
                        Increment (Local1)
                        If (LGreater (SizeOf (Arg2), Local1))
                        {
                            Store (DerefOf (Index (Arg2, Local1)), HBDR)
                        }
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SBLR, 3, Serialized)
                {
                    Name (TBUF, Buffer (0x0100) {})
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Arg2, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x54, HCON)
                    Store (0x0FA0, Local0)
                    While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                    {
                        Decrement (Local0)
                        Stall (0x32)
                    }

                    If (LNot (Local0))
                    {
                        KILL ()
                        Return (Zero)
                    }

                    Store (DAT0, Index (TBUF, Zero))
                    Store (0x80, HSTS)
                    Store (One, Local1)
                    While (LLess (Local1, DerefOf (Index (TBUF, Zero))))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (Zero)
                        }

                        Store (HBDR, Index (TBUF, Local1))
                        Store (0x80, HSTS)
                        Increment (Local1)
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (TBUF)
                    }

                    Return (Zero)
                }

                Method (STRT, 0, Serialized)
                {
                    Store (0xC8, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x40))
                        {
                            Decrement (Local0)
                            Sleep (One)
                            If (LEqual (Local0, Zero))
                            {
                                Return (One)
                            }
                        }
                        Else
                        {
                            Store (Zero, Local0)
                        }
                    }

                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, One))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, Zero))
                            {
                                KILL ()
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Return (One)
                }

                Method (COMP, 0, Serialized)
                {
                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x02))
                        {
                            Return (One)
                        }
                        Else
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, Zero))
                            {
                                KILL ()
                            }
                        }
                    }

                    Return (Zero)
                }

                Method (KILL, 0, Serialized)
                {
                    Or (HCON, 0x02, HCON)
                    Or (HSTS, 0xFF, HSTS)
                }

                Device (BUS0)
                {
                    Name (_CID, "smbus")
                    Name (_ADR, Zero)
                    Device (SEN0)
                    {
                        Name (_ADR, 0x2C)
                        Name (_CID, "ad-sensor")
                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x03)
                                {
                                    "address", 
                                    0x2C, 
                                    Buffer (One)
                                    {
                                        0x00
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (SEN1)
                    {
                        Name (_ADR, 0x2D)
                        Name (_CID, "wb-sensor")
                        Method (_DSM, 4, NotSerialized)
                        {
                            Store (Package (0x03)
                                {
                                    "address", 
                                    0x2D, 
                                    Buffer (One)
                                    {
                                        0x00
                                    }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }
                }
            }
        }
    }
}

